C++ | cout,打印返回的对象

 低调浪漫0613 发布于 2023-02-12 16:03

我遇到了一个问题,我无法通过cout打印返回的对象.

我觉得很难描述所以我写了一个非常基本的程序来显示我的问题.

编译器在运算符<<中表示类型不匹配.

重载+返回一个Integer对象,但为什么不能打印?

"Test.cpp的"

#include 
#include "Integer.h"
using namespace std;
int main() {
Integer int1(5);
Integer int2(2);
cout << (int1 + int2) << endl;  // Here it fails
cout << int2 << endl;           // Works
return 0;
}

"Integer.cpp"

#include "Integer.h"
Integer::Integer(int integer) {
 this->integer = integer;
}
int Integer::get_integer() 
return integer;
}
Integer Integer::operator +(Integer& integer) {
return Integer(this->integer + integer.get_integer());
}
ostream& operator<<(ostream& output, Integer& integer) {
output << integer.get_integer();
return output;
}

"Integer.h"

#include 
using namespace std;
class Integer {
private:
int integer;
public:
Integer(int integer);
int get_integer();
Integer operator+(Integer& integer);
};
ostream& operator<<(ostream& output, Integer& integer);

提前致谢

1 个回答
  • 将临时对象绑定到非const引用是非法的:

    cout << (int1 + int2) << endl; // The result of the '+' is temporary object.
    

    要更正,请将您的参数更改operator<<const Integer&:

    ostream& operator<<(ostream& output, const Integer& integer);
                                       //^^^^^
    

    2023-02-12 16:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有